﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Entity;
using System.Data.SqlClient;
using BackofficeExtremeEvents.Data;
using extremeEvents;

namespace BackofficeExtremeEvents.Utilizadores
{
    public partial class ListarUtilizadores : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            using (var utilizadordb  = new extremeEventsEntities())
            {
                
                //carrega a lista de utilizadores
                List<aspnet_Users> aspnet_User = utilizadordb.aspnet_Users.ToList();
                bool estado;
                //para cada linha altera o texto do botão
                for (int i = 0; i <= gvListaUtilizadores.Rows.Count - 1; i++)
                {
                    estado = !aspnet_User[i].aspnet_Membership.IsLockedOut;
                    LinkButton btn = (LinkButton)gvListaUtilizadores.Rows[i].Cells[3].Controls[0];
                    if (estado) btn.Text = "Desativar";
                    else btn.Text = "Ativar";
                }
            }
        }

        protected void gvListaUtilizadores_RowCommand(object sender, GridViewCommandEventArgs e)
        {   
            //guarda o id do utilizador para a linha em que foi accionado o comando
            Guid id = (Guid)gvListaUtilizadores.DataKeys[int.Parse(e.CommandArgument.ToString())].Value;
            if (e.CommandName == "Editar")
            {
                //coloca o id do utilizador em viewstate
                Session["Uid"] = id;
                Response.Redirect("../Utilizadores/EditarUtilizador.aspx");
            }
            if (e.CommandName == "Estado")
            {
                string alteracao = "";
                //alterar o estado na BD
                LinkButton btn = (LinkButton)gvListaUtilizadores.Rows[int.Parse(e.CommandArgument.ToString())].Cells[3].Controls[0];
                //verifica o botão e ativa/desativa o utilizador
                if (btn.Text == "Desativar") 
                {
                    alteracao = "desativado";
                    DLGenerica.Instance.alterarEstadoUtilizador((Guid)id, true); 
                }
                if (btn.Text == "Ativar") 
                {
                    alteracao = "ativado";
                    DLGenerica.Instance.alterarEstadoUtilizador((Guid)id, false);
                }
                //informa utilizador que foi alterado com sucesso
                Response.Write("<script>alert('Utilizador "+ alteracao + " com sucesso!');</script>");
                Response.Write("<script>window.location.reload();</script>");
                
            }
           
        }

    }
}